package com.kx.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;

/**
 * @Controller：创建处理器对象，对象放在springmvc容器中
 */
@Controller
public class MyController {
    /*
        处理用户提交的请求，springmvc中是使用方法来处理的。
        方法是自定义的，可以有多种返回值，多种参数，方法名称自定义
    */

    /**
     * 使用doSome方法处理some.do请求
     *
     * @RequestMapping：请求映射，作用是把一个请求地址和一个方法绑定在一起。 一个请求指定一个方法处理。
     * 属性：value是一个String，唯一，表示请求的url(some.do)地址
     * 说明：使用RequestMapping修饰的方法叫做处理器方法或控制器方法
     * 使用RequestMapping修饰的方法可以处理请求的，类似Servlet中的doGet和doPost
     * <p>
     * 返回值：ModelAndView表示本次请求的处理结果
     * Model：数据，请求处理完成后，要显示给用户的数据
     * View：试图
     */
    @RequestMapping("/some.do")
    public ModelAndView doSome() {  //doGet --service请求处理
        //可以处理some.do的请求了
        ModelAndView mv = new ModelAndView();
        //添加数据，框架在请求的最后把数据放入到request作用域
        //request.setAttribute("msg","欢迎使用");
        mv.addObject("msg", "欢迎使用");
        mv.addObject("fun", "执行的是doSome方法");
        //指定视图，指定视图的完整路径
        //框架对视图执行的forward操作，request.getRequestDispatcher("show.jsp").forward(...);

        //已经在springmvc中配置了视图解析器，就可以使用逻辑名称（show，other），指定视图
        mv.setViewName("show");
        mv.setViewName("other");
//        mv.setView(new RedirectView("/a.jsp"));
        return mv;
    }

    @RequestMapping("/other.do")
    public ModelAndView doOther() {
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg", "欢迎使用");
        mv.addObject("fun", "执行的是Other方法");
        mv.setViewName("other");
        return mv;
    }
}
